/* 
 * File:   Configuration.hpp
 * Author: bd
 *
 * Created on March 26, 2011, 1:59 PM
 */

#ifndef CONFIGURATION_HPP
#define	CONFIGURATION_HPP
#include <string>
/*
 * Stores Configuration data.
 * Responsibilities:
 *      -
 *
 */

/*
 * Sample configuration file: sample_config.xml
 */

class Configuration {
public:
    Configuration();
    Configuration(const Configuration& orig);
    virtual ~Configuration();

    //Member functions

    //Getter-Setter
    void logFile(std::string logFile_);
    std::string logFile() const;

    void sleepDuration(int sleepDuration_);
    int sleepDuration() const;

    void numOfDeliveryActivities(int numOfDeliveryActivities_);
    int numOfDeliveryActivities() const;

    void numOfFailoverActivities(int numOfFailoverActivities_);
    int numOfFailoverActivities() const;
    void numOfControllerActivities(int numOfControllerActivities_);
    int numOfControllerActivities() const;
    void queueThreshold(int queueThreshold_);
    int queueThreshold() const;
    void importChunkSize(int importChunkSize_);
    int importChunkSize() const;
    void specialTag(std::string specialTag_);
    std::string specialTag() const;
    void dataSourceConnStr(std::string dataSourceConnStr_);
    std::string dataSourceConnStr() const;
    void targetConnStr(std::string targetConnStr_);
    std::string targetConnStr() const;
    void terminationRetry(int terminationRetry_);
    int terminationRetry() const;
    void maxItemRetry(int maxItemRetry_);
    int maxItemRetry() const;

private:
    std::string logFile_;
    int sleepDuration_;
    int numOfDeliveryActivities_;
    int numOfFailoverActivities_;
    int numOfControllerActivities_;
    int queueThreshold_;
    int importChunkSize_;
    int terminationRetry_;
    int maxItemRetry_;
    std::string specialTag_;
    std::string dataSourceConnStr_;
    std::string targetConnStr_;
};

void load_configuration(const std::string& filename, Configuration& config);

#endif	/* CONFIGURATION_HPP */

